function _new(ctor, ...args) {
    if(typeof ctor !== 'function'){
        throw 'ctor must be a function'
    }
    const obj = Object.create(ctor.prototype);
    const result = ctor.call(obj, ...args);
    const isObject = typeof result === 'object' && result !== null;
    const isFunction = typeof result === 'function';
    if (isObject || isFunction) {
        return result
    }

    return obj
}